﻿using System;
using iTextSharp.text;
using iTextSharp.text.html.simpleparser;
using iTextSharp.text.pdf;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Text.RegularExpressions;
using System.Data;

namespace FrontEndPlus.Módulos.Publicidad
{
    public partial class frm_Noticia : System.Web.UI.Page
    {
        #region Variables

        WCF_Gimnasio.ServiceClient _service = new WCF_Gimnasio.ServiceClient();
        WCF_Gimnasio.cls_Noticias1 _noticias = new WCF_Gimnasio.cls_Noticias1();
        WCF_Gimnasio.cls_EnviarCorreos _BSEnvioEmail = new WCF_Gimnasio.cls_EnviarCorreos();
        WCF_Gimnasio.cls_Usuario _BSUsuarios = new WCF_Gimnasio.cls_Usuario();
        DataSet _correos;
       
        public string _carpeta;
        public string _email;
        public string carpeta
        {
            get { return _carpeta; }
            set { _carpeta = value; }
        }

        public string email
        {
            get { return _email; }
            set { _email = value; }
        }

        #endregion

        #region Acciones y eventos

        // Metodos Page load ayuda a cargar la imagen desde windows
        protected void Page_Load(object sender, EventArgs e)
        {
            _carpeta = Path.Combine(Request.PhysicalApplicationPath, "Uploads");
            txt_email.Enabled = false;
            if (!IsPostBack)
            {
                listas_distribucion();
            }

        }

        public void listas_distribucion()
        {
            //Llenado del dropdownlist
            DataSet ds = new DataSet("table");
            //_listasDistribucion = _servicio.Listar(1, _sms).Tables[0].Copy();
            ds.Tables.Add(_service.Listar(1, _noticias).Tables[0].Copy());
            if (ds != null)
            {

                dlp_lista_usuarios.DataSource = ds;
                dlp_lista_usuarios.DataTextField = "NOMBRE_ROL";
                dlp_lista_usuarios.DataBind();
                _service.Close();
            }
            else
            {
                Response.Write("<script type=\"text/javascript\">alert('Debe digitar el mensaje de texto, este o puede ir vacio');</script>");
                txt_email.Enabled = true;
                dlp_lista_usuarios.Enabled = false;
            }
        
        
        }

        //Metodos Validar correos electronicos
        public static bool validarEmail(string email)
        {
            String expresion;
            expresion = "\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";
            if (Regex.IsMatch(email, expresion))
            {
                if (Regex.Replace(email, expresion, String.Empty).Length == 0)
                { return true; }
                else { return false; }
            }
            else
            {
                return false;
            }
        }
        
        // evento para publicar almacena en base de datos

        protected void b_publicar_evento_Click(object sender, EventArgs e)
        { 
            
            if (FileUpload1.PostedFile.FileName == "")
            {
                Response.Write("<script type=\"text/javascript\">alert('Debe adjuntar una Imagen');</script>");

            }
            else
            {
                string extension = Path.GetExtension(FileUpload1.PostedFile.FileName);
                switch (extension.ToLower())
                {
                    case ".jpg":
                    case ".png":
                    case ".gif":
                        break;
                    default: Response.Write("<script type=\"text/javascript\">alert('Extencion de imagen no valida los archivos permitido son .gif, .jpg, .png');</script>");
                        return;
                }// switch
                try
                {

                    string _archivo = Path.GetFileName(FileUpload1.PostedFile.FileName);
                    string _carpeta_final = Path.Combine(_carpeta, _archivo);
                    FileUpload1.PostedFile.SaveAs(_carpeta_final);
                    if ((!string.IsNullOrEmpty(txt_body.Text)) && (!string.IsNullOrEmpty(txt_titulo.Text)))
                    {
                        string rtn = "";
                        _noticias.idUsuario = Convert.ToInt32(Session["idUSuario"]);
                        _noticias.titulo = txt_titulo.Text;
                        _noticias.body = txt_body.Text;
                        _noticias.fecha = DateTime.Now.ToString("dd/MM/yyyy");
                        _noticias.imagen = _archivo;
                        _service.InsertarActualizarRegistro(true, ref rtn, _noticias);
                        _service.Close();
                        Response.Write(("<script type=\"text/javascript\">alert('LOGICA NEGOCIO');</script>"));

                    }

                    else
                    {
                        Response.Write(("<script type=\"text/javascript\">alert('TIENE UNO O MAS CAMPOS VACIOS');</script>"));
                    }


                }// end try
                catch (Exception ex)
                {
                    Response.Write(("<script type=\"text/javascript\">alert('Error');</script>"));


                }// end catch
            }
        }
        // evento que envia correo electronico
        protected void b_enviar_mail_Click(object sender, EventArgs e)
        {
            try
            {
                if (dlp_lista_usuarios.Enabled == true)
                {
                    _noticias.rutina = dlp_lista_usuarios.SelectedItem.Text;
                    _correos = _service.Listar(2, _noticias);


                    foreach (DataRow row in _correos.Tables[0].Rows)
                    {
                        string _valorEmail = (row["EMAIL"]).ToString();
                        Response.Write(("<script type=\"text/javascript\">alert('El correo electronico es" + _valorEmail + "');</script>"));
                        if ((!string.IsNullOrEmpty(txt_body.Text)) && (!string.IsNullOrEmpty(txt_titulo.Text)))
                        {
                            string msg = "";
                            _BSEnvioEmail.Destinatario = _valorEmail;
                            _BSEnvioEmail.Asunto = "Noticias Gimnasion360 (" + txt_titulo.Text + ")";
                            _BSEnvioEmail.Mensaje = "Estimo cliente, <br><br> El Gimnasio360 se complace en informarle:  <br> " + txt_body.Text +
                                                    "<br><br>" + "Muchas gracias le eviamos el mas cordial de los saludos";
                            _BSUsuarios.IdUsuario = Convert.ToInt32(Session["idUSuario"]);
                            int _idUsuario = Convert.ToInt32(Session["idUSuario"]);
                            _service.EnviarMail(_idUsuario, ref msg, _BSEnvioEmail);

                        }
                        else
                        {
                            Response.Write(("<script type=\"text/javascript\">alert('TIENE UNO O MAS CAMPOS VACIOS');</script>"));

                        }
                    }

                }
                else
                {
                    if (validarEmail(txt_email.Text) == true)
                    {
                        if ((!string.IsNullOrEmpty(txt_body.Text)) && (!string.IsNullOrEmpty(txt_titulo.Text)))
                        {
                            string msg = "";
                            _BSEnvioEmail.Destinatario = txt_email.Text;
                            _BSEnvioEmail.Asunto = "Noticias Gimnasion360 (" + txt_titulo.Text + ")";
                            _BSEnvioEmail.Mensaje = "Estimo cliente, <br><br> El Gimnasio360 se complace en informarle:  <br> " + txt_body.Text +
                                                    "<br><br>" + "Muchas gracias le eviamos el mas cordial de los saludos";
                            _BSUsuarios.IdUsuario = Convert.ToInt32(Session["idUSuario"]);
                            int _idUsuario = Convert.ToInt32(Session["idUSuario"]);
                            _service.EnviarMail(_idUsuario, ref msg, _BSEnvioEmail);

                        }
                        else
                        {
                            Response.Write(("<script type=\"text/javascript\">alert('TIENE UNO O MAS CAMPOS VACIOS');</script>"));

                        }

                    }

                    else
                    {
                        Response.Write(("<script type=\"text/javascript\">alert('El formato del correo no es el correcto por favor Verificarlo');</script>"));
                    }
                }
            }
            catch
            {
                Response.Write(("<script type=\"text/javascript\">alert('Hubo un error al procesar su solicitud, favor digitar sus datos nuevamente');</script>"));

            }




        }
        //Metodo para limpiar las cajas de texto
        protected void b_limpiar_Click(object sender, EventArgs e)
        {
            //Limpiar de manera rapida
            txt_titulo.Text = "";
            txt_body.Text = "";
            txt_email.Text = "";
            this.txt_titulo.Focus();
          
        }
        //Evento para imprimir a PDF
        protected void b_imprimir_Click(object sender, EventArgs e)
        {
            Document pdfDoc = new Document(PageSize.A4, 10, 10, 10, 10);

            if (FileUpload1.PostedFile.FileName == "")
            {
                Response.Write("<script type=\"text/javascript\">alert('Debe adjuntar una Imagen');</script>");

            }
            else
            {
                string extension = Path.GetExtension(FileUpload1.PostedFile.FileName);
                switch (extension.ToLower())
                {
                    case ".jpg":
                    case ".png":
                    case ".gif":
                        break;
                    default: Response.Write("<script type=\"text/javascript\">alert('Extencion de imagen no valida los archivos permitido son .gif, .jpg, .png');</script>");
                        return;
                }// switch
                try
                {
                    string _archivo = Path.GetFileName(FileUpload1.PostedFile.FileName);
                    string _carpeta_final = Path.Combine(_carpeta, _archivo);
                    FileUpload1.PostedFile.SaveAs(_carpeta_final);

                    PdfWriter.GetInstance(pdfDoc, System.Web.HttpContext.Current.Response.OutputStream);

                    //Open PDF Document to write data 
                    pdfDoc.Open();


                    string cadenaFinal = "";
                    string path = Server.MapPath("/Uploads/"+_archivo);
                    cadenaFinal += "<img src='" + path + "' Height='120' Width='150' /><br/><br/><br/><br/><br/><br/>";
                    cadenaFinal += "<title <font face=Verdana><b>" + txt_titulo.Text + "<\b></font></title>" + "<body><p>" + txt_body.Text + "</p></body>";




                        
                        //"<TABLE BORDER='1'><TR><TD>" + txt_titulo.Text + ":</TD><TD>" + DateTime.Now.ToString("dd/MM/yyyy") + "</TD></TR>" +
                        //            "<TR>><TD>"+txt_body.Text+"</TD></TR>" +
                        //            "</TR></TABLE>";
                    //Assign Html content in a string to write in PDF 
                    string strContent = cadenaFinal;

                    //Read string contents using stream reader and convert html to parsed conent 
                    var parsedHtmlElements = HTMLWorker.ParseToList(new StringReader(strContent), null);

                    //Get each array values from parsed elements and add to the PDF document 
                    foreach (var htmlElement in parsedHtmlElements)
                        pdfDoc.Add(htmlElement as IElement);

                    //Close your PDF 
                    pdfDoc.Close();

                    Response.ContentType = "application/pdf";

                    //Set default file Name as current datetime 
                    Response.AddHeader("content-disposition", "attachment; filename=Noticia.pdf");
                    System.Web.HttpContext.Current.Response.Write(pdfDoc);
                    Response.Flush();
                    Response.Redirect("frm_Noticia.aspx", true);
                    Response.End();
                    Response.Redirect("frm_Noticia.aspx", true);

                }
                catch (Exception ex)
                {
                    Response.Write(ex.ToString());
                }
            }
        }

        protected void btn_email_Click(object sender, EventArgs e)
        {
            txt_email.Enabled = true;
            dlp_lista_usuarios.Enabled = false;
        }

        protected void btn_tipo_usuarios_Click(object sender, EventArgs e)
        {
            txt_email.Enabled = false;
            dlp_lista_usuarios.Enabled = true;
        }

    }
        #endregion
}
